from django.shortcuts import redirect, render
from blog1903 import models
import datetime

#分页：每页n条 当前在第p页 总的有t页


def list(request, leibie_id):
    k = request.GET.get('keyword')
    #从网址中取keyword参数的值，如网址是 http://....../list/1/?keyword=代码&s=....，则k取得"代码"
    p = request.GET.get('page')
    #从网址中取page的值
    if (p != None):  #如果网址中没有page参数
        try:  #尝试做转换
            p = int(p)
        except:  #如果转换出错，则把p设置为1
            p = 1
    else:
        p = 1
    if (p < 1):  #如果传进来的页码数小于1，则置为1，以免程序后续取数据出错
        p = 1
    pagesize = 10  #每页多少条数据，自行设置
    start = (p - 1) * pagesize  #算分页开始索引
    end = p * pagesize  #算分页结束索引
    l = models.Content.objects  #l是数据库查询
    if (k != None):  #如果有查询关键字
        l = l.filter(title__contains=k)  #从l里继续查询title字段包含k的数据
    if (leibie_id != '0'):  #如果传进来的类别id不是0
        l = l.filter(category_id=leibie_id)  #从l中继续查询类别为liebie_id的数据
    l = l.order_by('-creation_time')  #把l中的数据按creation_time字段倒序
    l = l[start:end]  #从l中取分页数据部分
    lb = models.Category.objects.all().order_by("order")
    context = {"list": l, "leibie": lb, "next": p + 1}  #建立字典，准备传给界面用
    return render(request, "list.html", context)


def show(request, id):
    
    #从网址中取keyword参数的值，如网址是 http://....../list/1/?keyword=代码&s=....，则k取得"代码"
    p = request.GET.get('page')
    #从网址中取page的值
    if (p != None):  #如果网址中没有page参数
        try:  #尝试做转换
            p = int(p)
        except:  #如果转换出错，则把p设置为1
            p = 1
    else:
        p = 1
    if (p < 1):  #如果传进来的页码数小于1，则置为1，以免程序后续取数据出错
        p = 1
    pagesize = 10  #每页多少条数据，自行设置
    start = (p - 1) * pagesize  #算分页开始索引
    end = p * pagesize  #算分页结束索引


    wz = models.Content.objects.get(id=id)  #文章
    key = wz.tag.split(',')[0]  #取第一个标签
    tj = models.Content.objects.filter(tag__contains=key).order_by('-creation_time')[0:8]  #查询推荐列表
    pl = models.Comment.objects.filter(content_id=id).order_by('-creation_time')[start:end] #查询评论列表
    sl = models.Content.objects.count() #查询文章总数量

    output = {
        'wenzhang': wz,
        'tuijian': tj,
        'pinglun': pl,
        'shuliang':sl,
        'zxpl': '',
        'tianshu': 3
    }
    return render(request, "show.html", output)

def addcomment(request):
    pl = models.Comment()
    pl.content = models.Content.objects.get(id=request.POST['wid'])
    pl.text = request.POST['comment']
    pl.nickname = request.POST['nickname']
    pl.creation_time = datetime.datetime.now()
    pl.ip = get_ip(request)
    pl.save()
    return redirect('/show/'+request.POST['wid']+'#comment_list')


#X-Forwarded-For:简称XFF头，它代表客户端，也就是HTTP的请求端真实的IP，只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。
def get_ip(request):
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[0]#所以这里是真实的ip
    else:
        ip = request.META.get('REMOTE_ADDR')#这里获得代理ip
    return ip